創建資料庫
可以用 phpMyAdmin, 或是 HeidiSql, 或是 Navixxx。編碼選擇
資料庫名稱:laravel (可自行命名)
字元集:utf8mb4
定序:utf8mb4_unicode_ci
安裝 Laravelcomposer create-project laravel/laravel blog
預設會安裝最新版本。中間那兩個 laravel 單字不要改。後面那個 blog 可以自己命名
例如在 C:\Web\ 底下執行,會產生
C:\Web\Blog
app
bootstrap
config
...
如果要安裝指定版本,例如現有伺服器的php版本還是 7.x ,而現在 laravel 9 需要 php 8.x。所以只能使用 laravel 8composer create-project laravel/laravel=8.* blog
查看 laravel 版本php artisan
Laravel Framework 9.14.1
執行 composer update
編輯 .env
...
APP_URL=http://laravel.test
...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=123456
安裝 auth
參考官網 https://github.com/laravel/uicomposer require laravel/ui
以下三擇一php artisan ui bootstrap --auth
php artisan ui vue --auth
php artisan ui react --auth
目前我對後兩者不熟,所以我還是直接使用第一種。
laravel/ui 跟 laravel/breeze 有何不同?
breeze 是 laravel 9 的官網所介紹的。前端框架使用 Taiwind ,這又是另一個故事。先別那麼麻煩。
安裝 npmnpm install
npm run dev
這兩個指令執行完,會有提示訊息
> dev
> npm run development
> development
> mix
Additional dependencies must be installed. This will only take a moment.
Running: npm install resolve-url-loader@^5.0.0 --save-dev --legacy-peer-deps
Finished. Please run Mix again.
直接再執行一次npm run dev
出現另一段訊息
1 WARNING in child compilations (Use 'stats.children: true' resp. '--stats-children' for more details)
webpack compiled with 1 warning
執行 npm install autoprefixer@10.4.5 --save-exact
接著再執行一次 npm run dev
這時候應該顯示成功。
參考 WARNING in child compilations (Use 'stats.children: true' resp. '--stats-children' for more details)
使用 migrate 建立資料表
php artisan migrate
設定網站
這個有很多種方式。最簡單的是用 php artisan serve
,執行後通常會運行在 8000 port。開啟瀏覽器,進入 http://localhost:8000
或是用 xampp, 或是用 wamp, 或是用 nginx, 或是用 docker, docker+apache, docker+nginx。
我是使用可移動式的 apache + php + mysql, 可以我另一篇多版本 php 共存。
這裡先略過這個。先假設網址是 http://laravel.test 。
我是去編輯 Windows 的 hosts
C:\Windows\System32\drivers\etc\hosts
127.0.0.1 laravel.test
安裝多語套件
套件:mcamara/laravel-localization
參考官網:https://github.com/mcamara/laravel-localizationcomposer require mcamara/laravel-localization
下面這是一個指令,是一行。本篇可能因寬度限制會有換行。記得下面這是一個指令,不是兩個。php artisan vendor:publish --provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider"
編輯 \config\laravellocalization.php
預設開啟的是 en 跟 es,把 es 關閉。然後下面原本簡中、繁中那兩行不動, I don't like it. 另外新增兩行
//'es' => ['name' => 'Spanish', 'script' => 'Latn', 'native' => 'español', 'regional' => 'es_ES'],
...
//'zh' => ['name' => 'Chinese (Simplified)', 'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'],
//'zh-Hant' => ['name' => 'Chinese (Traditional)', 'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_CN'],
'zh-cn' => ['name' => 'Chinese (Simplified)', 'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'],
'zh-tw' => ['name' => 'Chinese (Traditional)', 'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_TW'],
第一組代碼就是網址所使用的。需要大寫嗎?以微軟為例,它都是小寫。
修改 config/app.php
原本預設 en, 改成 zh-tw
'locale' => 'zh-tw'
修改路由
原本的 routes/web.php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
使用 group 把上面的內容包起來,改成
Route::group(
[
'prefix' => LaravelLocalization::setLocale(),
'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ],
], function()
{
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
});
修改 app/Http/Kernel.php
在 routeMiddleware 陣列後面新增
protected $routeMiddleware = [
/**** OTHER MIDDLEWARE ****/
'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
'localeCookieRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleCookieRedirect::class,
'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class
];
開啟網頁 http://laravel.test 應該會自動轉址到 http://laravel.test/en
咦,怎麼沒有轉到 zh-tw ? 大概是因為現在的語言檔還只有 en。但是此時網址使用 zh-tw 也是可以的 http://laravel.test/zh-tw
phpoffice/phpspreadsheet
應該很有機會用到,先裝一下。
官網 https://phpspreadsheet.readthedocs.io/en/latest/#installationcomposer require phpoffice/phpspreadsheet --prefer-source --with-all-dependencies
composer install
這時候應該有下面幾頁可以用
首頁 welcome
註冊頁 register
登入頁 login
登入後的 home
登出 logout